<!--
 * @Descripttion: 
 * @Version: 
 * @Author: gaohj
 * @Date: 2023-01-09 10:17:10
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2023-01-09 11:28:56
-->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // var i = 0,j = 0;
        // for(;i<10,j<6;i++,j++){  // j=6终止 i=6终止
        //     // i 5 i 5
        //         k = i + j;
        // }
        // console.log(k);

        //     var test = "过了这个村,我在下个村等你"; // 村 => 庄  
        //     // 以村作为 切割符 然后以庄作为连接符 
        //    var res = test.split("村");
        //    console.log(res.join("庄"));

        function fn1() {
            var a = 0;

            function fn2() {
                ++a;
                alert(a);
            }
            return fn2; // 返回函数 没有执行 
        }
        // fn1(); // => fn2 
        // //想执行fn2 必须加上小括号 
        // fn1()(); // => fn2()
        // var newFn = fn1();
        // newFn; // => fn2
        // newFn(); // => fn2() // 1
        // newFn(); // => fn2() // 2


        // var a = 100;

        // function fn1() {
        //     alert(a);
        //     var a = 10;
        // }
        // alert(fn1());


        var a = 10;  //全局变量  
        function test() {
            a = 100; 
            alert(a); // 100 
            alert(this.a);  // this作用域  10 
            var a;   
            alert(a);  // 100 
        }
        test(); // 100 10  100 

        // 预解析 
        // var a;声明一个变量 没有赋值 
        // 声明一个变量 test 并且赋值为一个函数



        // 执行阶段  
        // 把10 给到 a 
        // 接下来 对函数内的代码进行预解析  
        // 声明一个变量 a 没有赋值 
        // 函数内预解析完成  

        //函数执行
        // 把100 给到 a  自己有了 就是自己的了 

        // 因为 this.a 在var a之前 所以它指向的作用域是全局 
        // 所以this.a 指向的是全局的a 10 


        // 100 10 100 

    </script>
</body>

</html>